package tests;

import org.junit.Assert; 
import org.junit.Before;
import org.junit.Test;

import TecMaster.Cliente;

/**
 * Testes da Classe Cliente do projeto TecMaster
 * 
 * @author The�crito Moura
 * 
 * @version 0.1
 */

public class TesteCliente {
	
	Cliente c1;
	Cliente c2;
	Cliente c3;
	
	@Before
	public void setUp() throws Exception {
		c1 = new Cliente("Tom", "Rua Nascimento Silva, 107", "10475475612");
		c2 = new Cliente("Carlos", "Rua dos pombos, 0", "23423534501");
	}
	
	@Test (expected = IllegalArgumentException.class)
	public void testaNomeNull() {
		c2 = new Cliente(null, "Rua julio tavares", "12345678911");
	}
	
	@Test (expected = IllegalArgumentException.class)
	public void testaNomeVazio() {
		c2 = new Cliente("", "Rua julio tavares", "12345678911");
	}
	
	@Test (expected = IllegalArgumentException.class)
	public void testaEnderecoNull() {
		c2 = new Cliente("Joao", null, "12345678911");
	}
	
	@Test (expected = IllegalArgumentException.class)
	public void testaCpfNull() {
		c2 = new Cliente("Joao", "Rua A. Tavares ", null);
	}
	
	@Test (expected = IllegalArgumentException.class)
	public void testaCpfVazio()  {
		c2 = new Cliente("Joao", "Rua A. Tavares ", "");
	}
	
	@Test (expected = IllegalArgumentException.class)
	public void testaCpfInvalido()  {
		c1 = new Cliente("Tom", "Rua Nascimento Silva, 107", "104754756122");
		c1 = new Cliente("Tom", "Rua Nascimento Silva, 107", "10475rys666");
		c1 = new Cliente("Tom", "Rua Nascimento Silva, 107", "10475rys6");
	}
	
	@Test 
	public void testaGetCpf() {
		Assert.assertEquals("Foi pego um Cpf errado","104.754.756-12", c1.getCpf());
		Assert.assertEquals("Foi pego um Cpf errado","234.235.345-01", c2.getCpf());
	}
	
	@Test
	public void testaGetNome() {
		Assert.assertEquals("Foi pego um nome errado","Tom", c1.getNome());
		Assert.assertEquals("Foi pego um nome errado", "Carlos", c2.getNome());
	}
	
	@Test
	public void testaGetEndereco() {
		Assert.assertEquals("Foi pego um endereco errado" ,"Rua Nascimento Silva, 107", c1.getEndereco());
		Assert.assertEquals("Foi pego um endereco errado" ,"Rua dos pombos, 0", c2.getEndereco());
	}
	
	@Test
	public void testaSetEndereco() {
		Assert.assertEquals("Foi pego um endereco errado" ,"Rua Nascimento Silva, 107", c1.getEndereco());
		Assert.assertEquals("Foi pego um endereco errado" ,"Rua dos pombos, 0", c2.getEndereco());
		c1.setEndereco("Rua Carvalho, 306");
		Assert.assertEquals("Endereco era pra ter sido mudado" ,"Rua Carvalho, 306", c1.getEndereco());
		c2.setEndereco("Rua Carlos Cavalcante, 305");
		Assert.assertEquals("Endereco era pra ter sido mudado" ,"Rua Carlos Cavalcante, 305", c2.getEndereco());
	}
	
	@Test
	public void testaToString() {
		Assert.assertEquals("Erro no toString", "Cliente: Tom - Endereco: Rua Nascimento Silva, 107 - CPF: 104.754.756-12", c1.toString());
		Assert.assertEquals("Erro no toString", "Cliente: Carlos - Endereco: Rua dos pombos, 0 - CPF: 234.235.345-01", c2.toString());
	}
	
	@Test
	public void testaEquals() {
		Assert.assertFalse("Clientes deveriam ser diferentes", c1.equals(c2));
		Cliente c3  = new Cliente("Maria do Bairro", "Rua Rio Branco, 249", "10475475612");
		Assert.assertTrue("Clientes deveriam ser iguais", c1.equals(c3));
		
	}

}

